from flask import g
from flask import jsonify

from app.libs.error_code import DeleteSuccess, AuthFailed
from app.libs.redprint import Redprint
from app.libs.token_auth import auth
from app.models.base import db
from app.models.user import User

api = Redprint('user')


@api.route('/<int:uid>', methods=['GET'])
@auth.login_required
def super_get_user(uid):
    user = User.query.get_or_404(uid)
    return jsonify(user)


@api.route('', methods=['GET'])
@auth.login_required
def get_user():
    user = User.query.get_or_404(g.user.uid)
    return jsonify(user)


@api.route('', methods=['DELETE'])
@auth.login_required
def del_user():
    # 用户注销，不能注销其他用户，只能注销自己
    uid = g.user.uid
    with db.auto_commit():
        user = User.query.get_or_404(uid)
        user.delete()
    return DeleteSuccess()


@api.route('/<int:uid>', methods=['DELETE'])
@auth.login_required
def super_del_user(uid):
    # 权限管理方式一
    with db.auto_commit():
        user = User.query.get_or_404(uid)
        user.delete()
    return DeleteSuccess()

# 用户种类非常多
# 注册形式也会非常多： 短信 邮件 qq 微信

# restful api 用户可以理解成客户端 因为接口是同时针对 app 网站 小程序

# pipenv install flask-httpauth


# a -- 超级管理员    A B C

# b -- 一般的管理员  B  C

# c --  普通用户     C
